﻿#pragma once
#include "../src_basics/dataStructAlg.h"

using namespace std;

class PolygonAlg
{
public:
	PolygonAlg(vector<Point>* points, vector<vector<Line>>* polyLinesPtr, vector<vector<vector<Line>>>* polygonssPtr)
		: m_points(points), m_polyLines(polyLinesPtr), m_polygonss(polygonssPtr) {
	};
	~PolygonAlg() {};
	void run();

private:
	bool fun1(vector<Point>& points, vector<Line>& path);		// 1.旅行商问题
	bool fun2(vector<Line>& path, double offset);				// 2.向上偏移
	bool fun3(vector<Line>& path, double offset);				// 3.两侧法向偏移，允许交叉
	bool fun4(vector<Line>& path, double offset);				// 4.两侧法相偏移，消除交叉

private:
	vector<Point>* m_points;
	vector<vector<Line>>* m_polyLines;	// 多组折线
	vector<vector<vector<Line>>>* m_polygonss;	// 多组多边形

};